package com.example.tests;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;

//import java.util.logging.Logger;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;

import com.example.fw.GroupObject;
import com.example.fw.Groups;

public class GroupCreationTests extends TestBase {

	//private Logger log = Logger.getLogger("GroupCreationTests");
	
	@Test(dataProvider = "groupsFromFile", dataProviderClass = GroupDataGenerator.class)
	public void testValidGroupCanBeCreated(GroupObject validGroup, boolean valid) throws Exception {
		//log.info("testValidGroupCanBeCreated start");
		Groups oldGroupList = app.getHibernateHelper().getGroups();
		//log.info("oldGroupList = " + oldGroupList);
		//log.info("validGroup = " + validGroup);
		app.getGroupHelper().createGroup(validGroup);
		Groups newGroupList = app.getHibernateHelper().getGroups();
		//log.info("newGroupList = " + newGroupList);
		if (valid)	{
			assertThat(newGroupList, equalTo(oldGroupList.withAdded(validGroup)));		//	hamcrest style lesson 4 65:00
		} else	{
			assertThat(newGroupList, equalTo(oldGroupList));
		}
		//log.info("testValidGroupCanBeCreated end");
	}
	
	@AfterMethod		// lesson 7 ~ 75:00
	public void testUiAndDbConformsWithModel()	{
		if (app.getProperty("ui.check") != null)	{
			Groups modelList = app.getGroupHelper().getGroups();
			Groups uiList = app.getGroupHelper().getUiGroups();
			assertThat(uiList, equalTo(modelList));
		}
		if (app.getProperty("db.check") != null)	{
			Groups modelList = app.getGroupHelper().getGroups();
			Groups dbList = app.getHibernateHelper().getGroups();
			assertThat(dbList, equalTo(modelList));
		}
	}
}
